<!DOCTYPE html>
<html lang="en" itemscope itemtype="http://schema.org/WebPage">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Rails Active Record总结 - Mars167 Blog</title>
  

<meta name="renderer" content="webkit" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>

<meta name="MobileOptimized" content="width"/>
<meta name="HandheldFriendly" content="true"/>


<meta name="applicable-device" content="pc,mobile">

<meta name="theme-color" content="#f8f5ec" />
<meta name="msapplication-navbutton-color" content="#f8f5ec">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="#f8f5ec">

<meta name="mobile-web-app-capable" content="yes">

<meta name="author" content="mars167" />
  <meta name="description" content=" 总结自Ruby on Rails 指南
" />

  <meta name="keywords" content="Mars167,技术博客, blog, jane, Mars167的hugo博客, golang" />






<meta name="generator" content="Hugo 0.54.0" />


<link rel="canonical" href="http://blog.sunjinhui.top/post/rails-active-record%E6%80%BB%E7%BB%93/" />



<link rel="icon" href="/favicon.ico" />











<link rel="stylesheet" href="/sass/jane.min.ec807d8b802a40889537c26e014f733206312ea440d42e1f0dabed80918de1ac.css" integrity="sha256-7IB9i4AqQIiVN8JuAU9zMgYxLqRA1C4fDavtgJGN4aw=" media="screen" crossorigin="anonymous">





<meta property="og:title" content="Rails Active Record总结" />
<meta property="og:description" content="
总结自Ruby on Rails 指南
" />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://blog.sunjinhui.top/post/rails-active-record%E6%80%BB%E7%BB%93/" />
<meta property="article:published_time" content="2019-09-22T16:14:57&#43;08:00"/>
<meta property="article:modified_time" content="2019-09-22T16:14:57&#43;08:00"/><meta property="og:site_name" content="Mars167 Blog" />

<meta itemprop="name" content="Rails Active Record总结">
<meta itemprop="description" content="
总结自Ruby on Rails 指南
">


<meta itemprop="datePublished" content="2019-09-22T16:14:57&#43;08:00" />
<meta itemprop="dateModified" content="2019-09-22T16:14:57&#43;08:00" />
<meta itemprop="wordCount" content="885">



<meta itemprop="keywords" content="“ruby”,”ruby on rails”,”active record&#34;," />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Rails Active Record总结"/>
<meta name="twitter:description" content="
总结自Ruby on Rails 指南
"/>

<!--[if lte IE 9]>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/classlist/1.1.20170427/classList.min.js"></script>
<![endif]-->

<!--[if lt IE 9]>
  <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->




</head>
<body>
  <div id="mobile-navbar" class="mobile-navbar">
  <div class="mobile-header-logo">
    <a href="/" class="logo">Mars167</a>
  </div>
  <div class="mobile-navbar-icon">
    <span></span>
    <span></span>
    <span></span>
  </div>
</div>
<nav id="mobile-menu" class="mobile-menu slideout-menu">
  <ul class="mobile-menu-list">
    <li class="mobile-menu-item">
        
          
          
            <a class="menu-item-link" href="http://blog.sunjinhui.top/post/">归档</a>
          
        
      </li><li class="mobile-menu-item">
        
          
          
            <a class="menu-item-link" href="http://blog.sunjinhui.top/tags/">标签</a>
          
        
      </li><li class="mobile-menu-item">
        
          
          
            <a class="menu-item-link" href="http://blog.sunjinhui.top/categories/">分类</a>
          
        
      </li><li class="mobile-menu-item">
        
          
          
            <a class="menu-item-link" href="http://blog.sunjinhui.top/">首页</a>
          
        
      </li>
    
  </ul>
</nav>


  
    






  <link rel="stylesheet" href="/lib/photoswipe/photoswipe.min.css" />
  <link rel="stylesheet" href="/lib/photoswipe/default-skin/default-skin.min.css" />




<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

<div class="pswp__bg"></div>

<div class="pswp__scroll-wrap">
    
    <div class="pswp__container">
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
    </div>
    
    <div class="pswp__ui pswp__ui--hidden">
    <div class="pswp__top-bar">
      
      <div class="pswp__counter"></div>
      <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
      <button class="pswp__button pswp__button--share" title="Share"></button>
      <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
      <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
      
      
      <div class="pswp__preloader">
        <div class="pswp__preloader__icn">
          <div class="pswp__preloader__cut">
            <div class="pswp__preloader__donut"></div>
          </div>
        </div>
      </div>
    </div>
    <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
      <div class="pswp__share-tooltip"></div>
    </div>
    <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
    </button>
    <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
    </button>
    <div class="pswp__caption">
      <div class="pswp__caption__center"></div>
    </div>
    </div>
    </div>
</div>

  

  

  <header id="header" class="header container">
    <div class="logo-wrapper">
  <a href="/" class="logo">
    
      Mars167
    
  </a>
</div>

<nav class="site-navbar">
  <ul id="menu" class="menu">
    
    
        <li class="menu-item">
        
          
          
            <a class="menu-item-link" href="http://blog.sunjinhui.top/post/">归档</a>
          

        

      </li>
    
        <li class="menu-item">
        
          
          
            <a class="menu-item-link" href="http://blog.sunjinhui.top/tags/">标签</a>
          

        

      </li>
    
        <li class="menu-item">
        
          
          
            <a class="menu-item-link" href="http://blog.sunjinhui.top/categories/">分类</a>
          

        

      </li>
    
        <li class="menu-item">
        
          
          
            <a class="menu-item-link" href="http://blog.sunjinhui.top/">首页</a>
          

        

      </li>
    
    
  </ul>
</nav>

  </header>

  <div id="mobile-panel">
    <main id="main" class="main bg-llight">
      <div class="content-wrapper">
        <div id="content" class="content container">
          <article class="post bg-white">
    
    <header class="post-header">
      <h1 class="post-title">Rails Active Record总结</h1>
      
      <div class="post-meta">
        <time datetime="2019-09-22" class="post-time">
          2019-09-22
        </time>
        <div class="post-category">
            <a href="http://blog.sunjinhui.top/categories/ruby-on-rails/"> ”ruby on rails” </a>
            
          </div>
        <span class="more-meta"> 约 885 字 </span>
          <span class="more-meta"> 预计阅读 2 分钟 </span>

        
        
          <span id="busuanzi_container_page_pv">
            | 阅读 <span id="busuanzi_value_page_pv"></span>
          </span>
        

        
        
      </div>
    </header>

    
    

    
    <div class="post-content">
      <blockquote>
<p>总结自<a href="https://ruby-china.github.io/rails-guides/index.html">Ruby on Rails 指南</a></p>
</blockquote>

<h3 id="rails-6种关联类型">Rails 6种关联类型</h3>

<ul>
<li><code>belongs_to</code>

<ul>
<li>声明所在的模型实例属于另一个模型的实例</li>
<li>外键在 <code>belongs_to</code> 关联所在模型对应的表中，即XXX_id所在的模型</li>
<li>在 <code>has_one</code> 和 <code>belongs_to</code> 关联中，必须使用 <code>build_*</code> 方法构建关联对象。<code>association.build</code> 方法是在 <code>has_many</code> 和 <code>has_and_belongs_to_many</code> 关联中使用的。创建关联对象要使用 <code>create_*</code> 方法。</li>
<li>声明 <code>belongs_to</code> 关联后，所在的类自动获得了五个和关联相关的方法：

<ul>
<li><code>association</code></li>
<li><code>association=(associate)</code></li>
<li><code>build_association(attributes = {})</code>返回对象不存入数据库</li>
<li><code>create_association(attributes = {})</code>返回对象并存入数据库</li>
<li><code>create_association!(attributes = {})</code>不通过valid时抛出异常</li>
</ul></li>
<li><code>belongs_to</code> 关联支持下列选项：

<ul>
<li><code>:autosave</code></li>
<li><code>:class_name</code></li>
<li><code>:counter_cache</code></li>
<li><code>:dependent</code></li>
<li><code>:foreign_key</code></li>
<li><code>:primary_key</code></li>
<li><code>:inverse_of</code></li>
<li><code>:polymorphic</code></li>
<li><code>:touch</code></li>
<li><code>:validate</code></li>
<li><code>:optional</code></li>
</ul></li>
<li>在作用域代码块中可以使用任何一个标准的<a href="https://ruby-china.github.io/rails-guides/active_record_querying.html">查询方法</a>。下面分别介绍这几个：

<ul>
<li><code>where</code></li>
<li><code>includes</code></li>
<li><code>readonly</code></li>
<li><code>select</code></li>
</ul></li>
</ul></li>
<li><code>has_one</code>

<ul>
<li>这种关联表示模型的实例包含或拥有另一个模型的实例</li>
<li>声明 <code>has_one</code> 关联后，声明所在的类自动获得了五个关联相关的方法：

<ul>
<li><code>association</code></li>
<li><code>association=(associate)</code></li>
<li><code>build_association(attributes = {})</code></li>
<li><code>create_association(attributes = {})</code></li>
<li><code>create_association!(attributes = {})</code></li>
</ul></li>
<li><code>has_one</code> 关联支持下列选项：

<ul>
<li><code>:as</code></li>
<li><code>:autosave</code></li>
<li><code>:class_name</code></li>
<li><code>:dependent</code></li>
<li><code>:foreign_key</code></li>
<li><code>:inverse_of</code></li>
<li><code>:primary_key</code></li>
<li><code>:source</code></li>
<li><code>:source_type</code></li>
<li><code>:through</code></li>
<li><code>:validate</code></li>
</ul></li>
<li>在作用域代码块中可以使用任何一个标准的<a href="https://ruby-china.github.io/rails-guides/active_record_querying.html">查询方法</a>。下面介绍其中几个：

<ul>
<li><code>where</code></li>
<li><code>includes</code></li>
<li><code>readonly</code></li>
<li><code>select</code></li>
</ul></li>
</ul></li>
<li><code>has_many</code>

<ul>
<li><code>has_many</code> 关联建立两个模型之间的一对多关系。在 <code>belongs_to</code> 关联的另一端经常会使用这个关联</li>
<li>声明 <code>has_many</code> 关联后，声明所在的类自动获得了 16 个关联相关的方法：

<ul>
<li><code>collection</code></li>
<li><code>collection&lt;&lt;(object, &amp;#8230;&amp;#8203;)</code></li>
<li><code>collection.delete(object, &amp;#8230;&amp;#8203;)</code></li>
<li><code>collection.destroy(object, &amp;#8230;&amp;#8203;)</code></li>
<li><code>collection=(objects)</code></li>
<li><code>collection_singular_ids</code></li>
<li><code>collection_singular_ids=(ids)</code></li>
<li><code>collection.clear</code></li>
<li><code>collection.empty?</code></li>
<li><code>collection.size</code></li>
<li><code>collection.find(&amp;#8230;&amp;#8203;)</code></li>
<li><code>collection.where(&amp;#8230;&amp;#8203;)</code></li>
<li><code>collection.exists?(&amp;#8230;&amp;#8203;)</code></li>
<li><code>collection.build(attributes = {}, &amp;#8230;&amp;#8203;)</code></li>
<li><code>collection.create(attributes = {})</code></li>
<li><code>collection.create!(attributes = {})</code></li>
</ul></li>
<li><code>has_many</code> 关联支持以下选项：

<ul>
<li><code>:as</code></li>
<li><code>:autosave</code></li>
<li><code>:class_name</code></li>
<li><code>:counter_cache</code></li>
<li><code>:dependent</code></li>
<li><code>:foreign_key</code></li>
<li><code>:inverse_of</code></li>
<li><code>:primary_key</code></li>
<li><code>:source</code></li>
<li><code>:source_type</code></li>
<li><code>:through</code></li>
<li><code>:validate</code></li>
</ul></li>
<li></li>
</ul></li>
<li><code>has_many :through</code>

<ul>
<li>建立两个模型之间的多对多关联。这种关联表示一个模型的实例可以借由第三个模型（关系表），拥有零个和多个另一模型的实例。</li>
<li>有一个关系表和相对应的model</li>
<li>如果想把关联模型当做独立实体使用，要用 <code>has_many :through</code> 关联</li>
</ul></li>
<li><code>has_one :through</code>

<ul>
<li>通过第三个模型，建立其他两个模型的一对一关系</li>
</ul></li>
<li><code>has_and_belongs_to_many</code>

<ul>
<li>不借由第三个模型建立的多对多</li>
<li>仍然有第三个关系表但这个表没有model</li>
<li>如果不需要使用关联模型，建立 <code>has_and_belongs_to_many</code> 关联更简单（不过要记得在数据库中创建联结表）</li>
</ul></li>
</ul>

<h4 id="自联结如何创建">自联结如何创建</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-ruby" data-lang="ruby"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-ruby" data-lang="ruby"><span class="sb">`class`</span> <span class="sb">`Employee &lt; ApplicationRecord``  ``has_many ``:subordinates``, class_name: ``&#34;Employee&#34;``,``                          ``foreign_key: ``&#34;manager_id&#34;`</span> <span class="sb">`  ``belongs_to ``:manager``, class_name: ``&#34;Employee&#34;``end`</span></code></pre></td></tr></table>
</div>
</div>
<h4 id="创建联结表">创建联结表</h4>

<p>使用<code>create_join_table</code>创建联结表</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-ruby" data-lang="ruby"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-ruby" data-lang="ruby"><span class="sb">`class`</span> <span class="sb">`CreateAssembliesPartsJoinTable &lt; ActiveRecord::Migration[``5``.``0``]``  ``def`</span> <span class="sb">`change``    ``create_join_table ``:assemblies``, ``:parts`</span> <span class="sb">`do`</span> <span class="sb">`|t|``      ``t.index ``:assembly_id``      ``t.index ``:part_id``    ``end``  ``end``end`</span></code></pre></td></tr></table>
</div>
</div>
<h4 id="双向关联的问题">双向关联的问题</h4>

<p>Active Record 能自动识别多数具有标准名称的双向关联。然而，具有下述选项的关联无法识别：</p>

<ul>
<li><code>:conditions</code></li>
<li><code>:through</code></li>
<li><code>:polymorphic</code></li>
<li><code>:class_name</code></li>
<li><code>:foreign_key</code></li>
</ul>

<p>Active Record 提供了 <code>:inverse_of</code> 选项，可以通过它明确声明双向关联</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre class="chroma"><code class="language-ruby" data-lang="ruby"><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre class="chroma"><code class="language-ruby" data-lang="ruby"><span class="sb">`class`</span> <span class="sb">`Author &lt; ApplicationRecord``  ``has_many ``:books``, inverse_of: ``&#39;writer&#39;``end`</span> <span class="sb">`class`</span> <span class="sb">`Book &lt; ApplicationRecord``  ``belongs_to ``:writer``, class_name: ``&#39;Author&#39;``, foreign_key: ``&#39;author_id&#39;``end`</span></code></pre></td></tr></table>
</div>
</div>
<p><code>inverse_of</code> 有些限制：</p>

<ul>
<li>不支持 <code>:through</code> 关联；</li>
<li>不支持 <code>:polymorphic</code> 关联；</li>
<li>不支持 <code>:as</code> 选项；</li>
</ul>
    </div>

    
    


    
    

    <footer class="post-footer">
      <div class="post-tags">
          <a href="http://blog.sunjinhui.top/tags/ruby/">“ruby”</a>
          <a href="http://blog.sunjinhui.top/tags/ruby-on-rails/">”ruby on rails”</a>
          <a href="http://blog.sunjinhui.top/tags/active-record/">”active record&#34;</a>
          
        </div>

      
      <nav class="post-nav">
        
        
          <a class="next" href="/post/softwaretesting_summary/">
            <span class="next-text nav-default">“软件测试&#34;</span>
            <span class="prev-text nav-mobile">下一篇</span>
            
            <i class="iconfont">
              <svg class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="18" height="18">
  <path d="M332.091514 74.487481l-75.369571 89.491197c-10.963703 12.998035-10.285251 32.864502 1.499144 44.378743l286.278095 300.375162L266.565125 819.058374c-11.338233 12.190647-11.035334 32.285311 0.638543 44.850487l80.46666 86.564541c11.680017 12.583596 30.356378 12.893658 41.662889 0.716314l377.434212-421.426145c11.332093-12.183484 11.041474-32.266891-0.657986-44.844348l-80.46666-86.564541c-1.772366-1.910513-3.706415-3.533476-5.750981-4.877077L373.270379 71.774697C361.493148 60.273758 343.054193 61.470003 332.091514 74.487481z"></path>
</svg>

            </i>
          </a>
      </nav>
    </footer>
  </article>

  
  
  
  

  
  <div class="post bg-white">
    <script src="https://utteranc.es/client.js"
          repo="mars167/hugo"
          issue-term="pathname"
          label="11111"
          theme="github-light"
          crossorigin="anonymous"
          async>
  </script>
</div>
        </div>
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="icon-links">
  
  
    <a href="mailto:sunjinhui167@163.com" rel="me noopener" class="iconfont"
      title="email" >
      <svg class="icon" viewBox="0 0 1451 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="36" height="36">
  <path d="M664.781909 681.472759 0 97.881301C0 3.997201 71.046997 0 71.046997 0L474.477909 0 961.649408 0 1361.641813 0C1361.641813 0 1432.688811 3.997201 1432.688811 97.881301L771.345323 681.472759C771.345323 681.472759 764.482731 685.154773 753.594283 688.65053L753.594283 688.664858C741.602731 693.493018 729.424896 695.068979 718.077952 694.839748 706.731093 695.068979 694.553173 693.493018 682.561621 688.664858L682.561621 688.65053C671.644501 685.140446 664.781909 681.472759 664.781909 681.472759L664.781909 681.472759ZM718.063616 811.603883C693.779541 811.016482 658.879232 802.205449 619.10784 767.734955 542.989056 701.759633 0 212.052267 0 212.052267L0 942.809523C0 942.809523 0 1024 83.726336 1024L682.532949 1024 753.579947 1024 1348.948139 1024C1432.688811 1024 1432.688811 942.809523 1432.688811 942.809523L1432.688811 212.052267C1432.688811 212.052267 893.138176 701.759633 817.019477 767.734955 777.248 802.205449 742.347691 811.03081 718.063616 811.603883L718.063616 811.603883Z"></path>
</svg>

    </a>
  
    <a href="https://www.facebook.com/Mars167-374743549936970/" rel="me noopener" class="iconfont"
      title="facebook"  target="_blank"
      >
      <svg class="icon" style="" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="33" height="33">
  <path d="M965.7344 2.7648c14.848 0 28.2624 5.5296 40.2432 16.6912C1017.9584 30.5152 1024 43.52 1024 58.2656l0 910.2336c0 14.848-6.0416 27.7504-18.0224 38.8096C993.8944 1018.4704 980.48 1024 965.7344 1024L704.9216 1024 704.9216 629.9648l133.2224 0 19.456-155.4432-152.576 0L705.024 373.0432c0-50.688 25.9072-76.0832 77.7216-76.0832l80.4864 0L863.232 163.5328c-27.7504-5.4272-67.4816-8.192-119.296-8.192-59.1872 0-106.8032 18.0224-142.9504 54.0672C564.736 245.5552 546.7136 296.0384 546.7136 360.7552l0 113.7664L413.4912 474.5216l0 155.4432 133.2224 0L546.7136 1024 55.5008 1024c-14.848 0-27.7504-5.5296-38.8096-16.6912C5.5296 996.2496 0 983.3472 0 968.4992L0 58.2656C0 43.52 5.5296 30.5152 16.6912 19.456c11.0592-11.0592 24.064-16.6912 38.8096-16.6912L965.7344 2.7648z"></path>
</svg>

    </a>
  
    <a href="https://www.linkedin.com/in/%E9%87%91%E8%BE%89-%E5%AD%99-52a350163/" rel="me noopener" class="iconfont"
      title="linkedin"  target="_blank"
      >
      <svg class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="33" height="33">
  <path d="M872.405333 872.618667h-151.637333v-237.610667c0-56.661333-1.152-129.578667-79.018667-129.578667-79.061333 0-91.136 61.653333-91.136 125.397334v241.792H398.976V384h145.664v66.602667h1.962667c20.352-38.4 69.845333-78.933333 143.786666-78.933334 153.642667 0 182.058667 101.12 182.058667 232.746667v268.202667zM227.712 317.141333a87.978667 87.978667 0 0 1-88.021333-88.106666 88.064 88.064 0 1 1 88.021333 88.106666z m76.032 555.477334H151.68V384h152.064v488.618667zM948.266667 0H75.562667C33.792 0 0 33.024 0 73.770667v876.458666C0 991.018667 33.792 1024 75.562667 1024h872.576C989.866667 1024 1024 991.018667 1024 950.229333V73.770667C1024 33.024 989.866667 0 948.138667 0h0.128z"></path>
</svg>

    </a>
  
    <a href="https://github.com/mars167" rel="me noopener" class="iconfont"
      title="github"  target="_blank"
      >
      <svg class="icon" style="" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="36" height="36">
  <path d="M512 12.672c-282.88 0-512 229.248-512 512 0 226.261333 146.688 418.133333 350.08 485.76 25.6 4.821333 34.986667-11.008 34.986667-24.618667 0-12.16-0.426667-44.373333-0.64-87.04-142.421333 30.890667-172.458667-68.693333-172.458667-68.693333C188.672 770.986667 155.008 755.2 155.008 755.2c-46.378667-31.744 3.584-31.104 3.584-31.104 51.413333 3.584 78.421333 52.736 78.421333 52.736 45.653333 78.293333 119.850667 55.68 149.12 42.581333 4.608-33.109333 17.792-55.68 32.426667-68.48-113.706667-12.8-233.216-56.832-233.216-253.013333 0-55.893333 19.84-101.546667 52.693333-137.386667-5.76-12.928-23.04-64.981333 4.48-135.509333 0 0 42.88-13.738667 140.8 52.48 40.96-11.392 84.48-17.024 128-17.28 43.52 0.256 87.04 5.888 128 17.28 97.28-66.218667 140.16-52.48 140.16-52.48 27.52 70.528 10.24 122.581333 5.12 135.509333 32.64 35.84 52.48 81.493333 52.48 137.386667 0 196.693333-119.68 240-233.6 252.586667 17.92 15.36 34.56 46.762667 34.56 94.72 0 68.522667-0.64 123.562667-0.64 140.202666 0 13.44 8.96 29.44 35.2 24.32C877.44 942.592 1024 750.592 1024 524.672c0-282.752-229.248-512-512-512"></path>
</svg>

    </a>


<a href="http://blog.sunjinhui.top/index.xml" rel="noopener alternate" type="application/rss&#43;xml"
    class="iconfont" title="rss" target="_blank">
    <svg class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="30" height="30">
  <path d="M819.157333 1024C819.157333 574.592 449.408 204.8 0 204.8V0c561.706667 0 1024 462.293333 1024 1024h-204.842667zM140.416 743.04a140.8 140.8 0 0 1 140.501333 140.586667A140.928 140.928 0 0 1 140.074667 1024C62.72 1024 0 961.109333 0 883.626667s62.933333-140.544 140.416-140.586667zM678.784 1024h-199.04c0-263.210667-216.533333-479.786667-479.744-479.786667V345.173333c372.352 0 678.784 306.517333 678.784 678.826667z"></path>
</svg>

  </a>
   
</div>

<div class="copyright">
  <span class="power-by">
    Powered by <a class="hexo-link" href="https://gohugo.io">Hugo</a>
  </span>
  <span class="division">|</span>
  <span class="theme-info">
    Theme - <a class="theme-link" href="https://github.com/xianmin/hugo-theme-jane">Jane</a>
  </span>

  <span class="copyright-year">
    &copy;
    2019
    <span class="heart">
      
      <i class="iconfont">
        <svg class="icon" viewBox="0 0 1025 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="14" height="14">
  <path d="M1000.1 247.9c-15.5-37.3-37.6-70.6-65.7-98.9-54.4-54.8-125.8-85-201-85-85.7 0-166 39-221.4 107.4C456.6 103 376.3 64 290.6 64c-75.1 0-146.5 30.4-201.1 85.6-28.2 28.5-50.4 61.9-65.8 99.3-16 38.8-24 79.9-23.6 122.2 0.7 91.7 40.1 177.2 108.1 234.8 3.1 2.6 6 5.1 8.9 7.8 14.9 13.4 58 52.8 112.6 102.7 93.5 85.5 209.9 191.9 257.5 234.2 7 6.1 15.8 9.5 24.9 9.5 9.2 0 18.1-3.4 24.9-9.5 34.5-30.7 105.8-95.9 181.4-165 74.2-67.8 150.9-138 195.8-178.2 69.5-57.9 109.6-144.4 109.9-237.3 0.1-42.5-8-83.6-24-122.2z"
   fill="#8a8a8a"></path>
</svg>

      </i>
    </span><span class="author">
        mars167
        
      </span></span>

  
  
    <span id="busuanzi_container">
      访客数/访问量：<span id="busuanzi_value_site_uv"></span>/<span id="busuanzi_value_site_pv"></span>
    </span>
  

  
</div>

    </footer>

    <div class="back-to-top" id="back-to-top">
      <i class="iconfont">
        
        <svg class="icon" viewBox="0 0 1024 1024" version="1.1"
  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  width="35" height="35">
  <path d="M510.866688 227.694839 95.449397 629.218702l235.761562 0-2.057869 328.796468 362.40389 0L691.55698 628.188232l241.942331-3.089361L510.866688 227.694839zM63.840492 63.962777l894.052392 0 0 131.813095L63.840492 195.775872 63.840492 63.962777 63.840492 63.962777zM63.840492 63.962777"></path>
</svg>

      </i>
    </div>
  </div>
  
<script type="text/javascript" src="/lib/jquery/jquery-3.2.1.min.js"></script>
  <script type="text/javascript" src="/lib/slideout/slideout-1.0.1.min.js"></script>




<script type="text/javascript" src="/js/main.638251f4230630f0335d8c6748e53a96f94b72670920b60c09a56fdc8bece214.js" integrity="sha256-Y4JR9CMGMPAzXYxnSOU6lvlLcmcJILYMCaVv3Ivs4hQ=" crossorigin="anonymous"></script>






  
    <script type="text/javascript" src="/js/load-photoswipe.js"></script>
    <script type="text/javascript" src="/lib/photoswipe/photoswipe.min.js"></script>
    <script type="text/javascript" src="/lib/photoswipe/photoswipe-ui-default.min.js"></script>
  




  <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>






  <script id="dsq-count-scr" src="//.disqus.com/count.js" async></script>





</body>
</html>
